#ifndef FILE_PATH_H
#define FILE_PATH_H

#include <string>

namespace Tvimeg
{
	class FilePath
	{
	public:
		FilePath(void);
		FilePath(const FilePath& pathIn);
		FilePath(const std::string& pathIn);
		FilePath(const char* pathIn);

		FilePath&			operator=(const FilePath& other);
		FilePath&			operator=(const std::string& other);
		FilePath&			operator=(const char* other);

		bool				operator==(const FilePath& other) const;
		bool				operator==(const std::string& other) const;
		bool				operator==(const char* other) const;

		bool				operator!=(const FilePath& other) const;
		bool				operator!=(const std::string& other) const;
		bool				operator!=(const char* other) const;

		FilePath			operator+(const FilePath& other) const;
		FilePath			operator+(const std::string& other) const;
		FilePath			operator+(const char* other) const;

		bool				operator<(const FilePath& other) const;

		bool				IsRelative(void) const;
		bool				IsAbsolute(void) const;
		bool				IsRoot(void) const;

		FilePath			GetParent(void) const;
		const std::string&	GetPath(void) const;

		std::string			GetNameAndExtension(void) const;
		std::string			GetName(void) const;
		std::string			GetExtension(void) const;

	private:
		std::string			path;
	};
}

#endif // FILE_PATH_H
